package org.ddevil.data.set;

import java.util.List;

import org.ddevil.data.Data;
import org.ddevil.data.ChangeTracker.Change;


/**
 * A DataSet extension that supports change tracking.
 * 
 * @author Rich O'Connell
 *
 */
public interface TrackableDataSet<T extends Data> extends DataSet<T> {
    
    /**
     * Turn on/off change tracking for this DataSet.
     * If you don't need to track changes then it would improve 
     * performance to turn it off.
     * 
     * @param boo
     */
    public void trackChanges(boolean boo);
    
    /**
     * Clear the current change list for this DataSet.
     */
    public void clearChanges();
    
    /**
     * Get the current change list for this DataSet.
     * 
     * @return
     */
    public List<Change> getChanges();

}
